package com.xygz.orm.transaction;

import java.sql.SQLException;

/**
 * 事务接口定义，包括提交、回滚、关闭以及判断是否已提交和已回滚
 *
 * @author xiyuan-lgz 2023-12-08 @version v1.0.0 新建与整理
 */
public interface Transaction {
    
    /**
     * 获取事务服务编号
     *
     * @return 事务编号
     */
    public String getId();
    
    /**
     * 开始事务
     *
     * @return 事务对象
     * @throws SQLException 异常信息
     */
    public Transaction begin() throws SQLException;
    
    /**
     * 提交事务
     *
     * @throws SQLException 异常信息
     */
    public void commit() throws SQLException;
    
    /**
     * 回滚事务
     *
     * @throws SQLException 异常
     */
    public void rollback() throws SQLException;
    
    /**
     * 关闭事务
     *
     * @throws SQLException 异常
     */
    public void close() throws SQLException;
    
    /**
     * 事务是否已提交
     *
     * @return true|false
     */
    public boolean isCommitted();
    
    /**
     * 事务是否已回滚
     *
     * @return true|false
     */
    public boolean isRollbacked();
    
    /**
     * 事务是否已关闭
     *
     * @return true|false
     */
    public boolean isClosed();
}
